﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ContadorDeHoras.DTO;
using ContadorDeHoras.BLL;

namespace ContadorDeHoras
{
    public partial class FormInclui : Form
    {

        private DateTime dia;
        private DateTime manhai;
        private DateTime manhaf;
        private DateTime tardei;
        private DateTime tardef;

        public FormInclui()
        {
            InitializeComponent();
            this.dateTimePicker.Text = DateTime.Today.AddDays(DateTime.Today.DayOfWeek == DayOfWeek.Monday ? -3 : -1).ToString();
            this.Text = "Inclusão de dia";
        }

        private void ajusta() {
            dia = Convert.ToDateTime(this.dateTimePicker.Text);
            //testar se o campo está preenchido
            //não mais necessário, vários testes no método on_blur
            //if (mskTxtManhaInicio.Text != " :" && mskTxtManhaFim.Text != "  :" && mskTxtTardeInicio.Text != "  :" && mskTxtTardeFim.Text != "  :")
            //{
                manhai = Convert.ToDateTime(string.Format("{0:dd/MM/yyyy} ", dia) + this.mskTxtManhaInicio.Text);
                manhaf = Convert.ToDateTime(string.Format("{0:dd/MM/yyyy} ", dia) + this.mskTxtManhaFim.Text);
                tardei = Convert.ToDateTime(string.Format("{0:dd/MM/yyyy} ", dia) + this.mskTxtTardeInicio.Text);
                tardef = Convert.ToDateTime(string.Format("{0:dd/MM/yyyy} ", dia) + this.mskTxtTardeFim.Text);
            //}
            //else
            //{
            //    MessageBox.Show("Um dos campos não foi preenchido!","Erro");
            //}
        }

        private void btnPersistir_Click(object sender, EventArgs e)
        {
            ajusta();
            try
            {
                DiaBLL.persiste(new DiaDTO(dia, manhai, manhaf, tardei, tardef));
                MessageBox.Show("Dia incluído com sucesso",this.Text);
            }
            catch
            {
                throw;
            }
        }

        private void on_blur(object sender, EventArgs e)
        {
            try
            {
                if (mskTxtManhaInicio.Text != " :" && mskTxtManhaFim.Text != "  :" && mskTxtTardeInicio.Text != "  :" && mskTxtTardeFim.Text != "  :")
                {
                    //somente para encerrar esse método no caso do usuário não ter digitado todos os números do horário
                    mskTxtManhaInicio.ValidateText();
                    mskTxtManhaFim.ValidateText();
                    mskTxtTardeInicio.ValidateText();
                    mskTxtTardeFim.ValidateText();

                    ajusta();
                    DiaDTO diatmp = new DiaDTO(dia, manhai, manhaf, tardei, tardef);
                    TimeSpan total = diatmp.calculaTempoTotal();
                    TimeSpan extra = diatmp.calculaTempoExtra();
                    this.mskTxtTotal.BackColor = (total >= new TimeSpan(8, 48, 0) ? Color.FromKnownColor(KnownColor.Window) : Color.Red);
                    this.mskTxtTotal.Text = total.ToString();
                    this.mskTxtExtra.BackColor = (extra >= new TimeSpan() ? Color.FromKnownColor(KnownColor.Window) : Color.Red);
                    this.mskTxtExtra.Text = extra.ToString();
                }
                
            }
            catch (Exception ex)
            {

            }

        }

    }
}
